/*
 * ManejadorArchivoUnico.h
 *
 *  Created on: 10/09/2010
 *      Author: julfc
 */

#ifndef MANEJADORARCHIVOUNICO_H_
#define MANEJADORARCHIVOUNICO_H_

#include <string>
#include <stdio.h>
#include <cstdio>
#include <stdlib.h>
#include <sstream>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include "ManejadorAccesoDatos.h"
#include "../clases/FiltroSeleccion.h"
#include "../clases/Mail.h"

using namespace std;

class ManejadorArchivoUnico: public ManejadorAccesoDatos {
public:
	ManejadorArchivoUnico();
	ManejadorArchivoUnico(char* nombreArchivo, AbrirCrearArchivo abrirCrear);

	long escribirMail(long uid, char* cadena, long tam_mail_serv);
	char* obtenerMail(long uid, long bloque);
	FiltroSeleccion buscarValoresFiltroSeleccion(DatoAObtener clave, string valor);
	vector<FiltroSeleccion> buscarValoresFiltroClasificacion(DatoAObtener clave);

	virtual ~ManejadorArchivoUnico();

private:
	void agregarMailFiltroClasificaion(vector<FiltroSeleccion> &listaFiltros, DatoAObtener clave, char* mail, long uid);
	void agregarMailAListaFiltros (vector<FiltroSeleccion> &listaFiltros, string clave, long uid);
	bool procesarFiltroMail(DatoAObtener clave, string valor, char* mail);
	bool procesarTo(string mailStr, string valor);
};

#endif /* MANEJADORARCHIVOUNICO_H_ */
